package com.util;

import lombok.Data;

import java.util.List;

/**
 * @author yutianhong
 * @version 1.0
 * @since 2023/12/20 16:40
 */
@Data
public class ParamInfo {
    /**
     * 参数顺序
     */
    public Integer id;
    /**
     * 参数注解
     */
    public List<AnnotationInfo> annotationInfoList;

    /**
     * 参数的名称，比如arg0、arg1。
     * 如果是入参，则不为null。
     */
    public String paramName;


    /**
     * 是不是基础类型
     */
    public boolean primitive;
    /**
     * 是不是数组
     */
    public boolean array;
    /**
     * 是不是void类型
     */
    public boolean voidType;
    /**
     * 是不是泛型变量
     */
    public boolean typeVariable;
    public boolean parameterized;
    /**
     * 内部类型
     */
    public ParamInfo componentType;
    /**
     * 参数类型，全类名
     */
    public String className;
    /**
     * 泛型
     */
    public String genericType;
    /**
     * 泛型信息
     */
    public List<ParamInfo> genericInfoList;

    /**
     * 是不是?通配符
     */
    public boolean wildcard;
    /**
     * ? super
     */
    public List<ParamInfo> lowerBounds;
    /**
     * ? extends 或 T extends
     */
    public List<ParamInfo> upperBound;

}
